home *** CD-ROM | disk | FTP | other *** search
- (***********************************************************)
- (* *)
- (* CrtPlus Unit Revision 1.0 *)
- (* (c) 1991 by Modern Solutions. All rights reserved. *)
- (* *)
- (***********************************************************)
-
- unit CrtPlus;
-
- interface
-
- uses dos;
-
- const
- videosegment:word=$b800;
-
- function CGApresent:boolean;
- function MDApresent:boolean;
- function EGApresent:boolean;
- procedure Crt80x43;
- procedure Crt80x50;
- procedure BlinkingOff;
- procedure BlinkingOn;
- procedure BlockFill(x1,y1,x2,y2,fc,bc,ascii:integer);
- procedure BlockColor(x1,y1,x2,y2,fc,bc:integer);
- procedure BlockCopy(x1,y1,x2,y2,x3,y3:integer);
-
- implementation
-
- function CGApresent:boolean;
-
- var
- localCGApresent:boolean;
-
- begin
- inline($ba/$d4/$03/$f8/$b0/$0f/$ee/$42/$ec/$8a/$e0/$b0/$66/$ee/$b9/
- $00/$01/$e2/$fe/$ec/$86/$e0/$ee/$80/$fc/$66/$74/$01/$f9/$72/
- $09/$c7/$86/localCGApresent/$01/$00/$eb/$07/$90/$c7/$86/
- localCGApresent/$00/$00);
- CGApresent:=localCGApresent;
- end;
-
- function MDApresent:boolean;
-
- var
- localMDApresent:boolean;
-
- begin
- inline($ba/$b4/$03/$f8/$b0/$0f/$ee/$42/$ec/$8a/$e0/$b0/$66/$ee/$b9/
- $00/$01/$e2/$fe/$ec/$86/$e0/$ee/$80/$fc/$66/$74/$01/$f9/$72/
- $09/$c7/$86/localMDApresent/$01/$00/$eb/$07/$90/$c7/$86/
- localMDApresent/$00/$00);
- MDApresent:=localMDApresent;
- end;
-
- function EGApresent:boolean;
-
- var
- localEGApresent:boolean;
-
- begin
- inline($32/$d2/$b4/$12/$b3/$10/$cd/$10/$80/$fb/$10/$74/$07/$80/$fb/
- $00/$74/$02/$b2/$01/$8a/$c2/$32/$e4/$89/$86/localEGApresent);
- EGApresent:=localEGApresent;
- end;
-
- procedure Crt80x43;
-
- begin
- inline($b8/$03/$00/$cd/$10/$b8/$12/$11/$b3/$00/$cd/$10/$b8/$40/$00/
- $8e/$c0/$26/$8b/$16/$63/$00/$b8/$0a/$06/$ef/$b8/$0b/$00/$ef/
- $b4/$12/$b3/$20/$cd/$10);
- end;
-
- procedure Crt80x50;
-
- begin
- inline($b8/$02/$12/$b3/$30/$cd/$10/$b8/$03/$00/$cd/$10/$b8/$12/$11/
- $b3/$00/$cd/$10);
- end;
-
- procedure BlinkingOff;
-
- var
- regs:registers;
-
- begin
- if egapresent then
- with regs do
- begin
- ax:=$1003;
- bl:=0;
- intr($10,regs);
- end
- else
- inline($b8/$40/$00/$8e/$c0/$26/$8b/$16/$63/$00/$80/$c2/$04/$26/$a0/
- $65/$00/$24/$df/$ee/$26/$a2/$65/$00);
- end;
-
- procedure BlinkingOn;
-
- var
- regs:registers;
-
- begin
- if egapresent then
- with regs do
- begin
- ax:=$1003;
- bl:=1;
- intr($10,regs);
- end
- else
- inline($b8/$40/$00/$8e/$c0/$26/$8b/$16/$63/$00/$80/$c2/$04/$26/$a0/
- $65/$00/$0c/$20/$ee/$26/$a2/$65/$00);
- end;
-
- function ColortoAttribute(fc,bc:integer):integer;
-
- begin
- inline($8b/$9e/fc/$8b/$86/bc/$bf/$10/$00/$f7/$e7/$83/$fb/$10/
- $7c/$06/$05/$80/$00/$83/$eb/$10/$03/$c3/$89/$86/colortoattribute);
- end;
-
- function Locate(x,y:integer):integer;
-
- begin
- inline($8b/$be/y/$8b/$b6/x/$4f/$4e/$b8/$50/$00/
- $f7/$e7/$03/$c6/$03/$c0/$89/$86/locate);
- end;
-
- procedure BlockFill(x1,y1,x2,y2,fc,bc,ascii:integer);
-
- var
- upperleft,lowerright,attribute:integer;
-
- begin
- upperleft:=locate(x1,y1);
- lowerright:=locate(x2,y2);
- attribute:=colortoattribute(fc,bc);
- inline($fc/$a1/videosegment/$8e/$c0/$8b/$be/upperleft/$8a/$86/
- ascii/$8a/$a6/attribute/$8b/$96/x2/$2b/$96/x1/$42/$8b/
- $ca/$f3/$ab/$2b/$fa/$2b/$fa/$81/$c7/$a0/$00/$3b/$be/
- lowerright/$7e/$ee);
- end;
-
- procedure BlockColor(x1,y1,x2,y2,fc,bc:integer);
-
- var
- upperleft,lowerright,attribute:integer;
-
- begin
- upperleft:=locate(x1,y1);
- lowerright:=locate(x2,y2);
- inc(upperleft);
- inc(lowerright);
- attribute:=colortoattribute(fc,bc);
- inline($fc/$a1/videosegment/$8e/$c0/$8b/$be/upperleft/$8a/$86/
- attribute/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ca/$aa/$47/$e2/
- $fc/$2b/$fa/$2b/$fa/$81/$c7/$a0/$00/$3b/$be/lowerright/
- $7e/$ec);
- end;
-
- procedure BlockCopy(x1,y1,x2,y2,x3,y3:integer);
-
- var
- x4,y4,srcupperleft,srclowerleft,srcupperright,srclowerright,
- destupperleft,destlowerleft,destupperright,destlowerright:integer;
-
- begin
- x4:=x3+(x2-x1);
- y4:=y3+(y2-y1);
- srcupperleft:=locate(x1,y1);
- srclowerleft:=locate(x1,y2);
- srcupperright:=locate(x2,y1);
- srclowerright:=locate(x2,y2);
- destupperleft:=locate(x3,y3);
- destlowerleft:=locate(x3,y4);
- destupperright:=locate(x4,y3);
- destlowerright:=locate(x4,y4);
- inline($55/$1e/$8b/$1e/videosegment/$8e/$c3/$8b/$86/x3/$3b/$86/
- x1/$7f/$70/$8b/$86/y3/$3b/$86/y1/$7f/$33/$fc/$8b/$b6/
- srcupperleft/$8b/$be/destupperleft/$8b/$96/x2/$2b/$96/
- x1/$42/$8b/$ae/srclowerright/$8e/$db/$8b/$ca/$f3/$a5/
- $2b/$f2/$2b/$f2/$2b/$fa/$2b/$fa/$81/$c6/$a0/$00/$81/
- $c7/$a0/$00/$3b/$f5/$7e/$e8/$e9/$a0/$00/$fc/$8b/$b6/
- srclowerleft/$8b/$be/destlowerleft/$8b/$96/x2/$2b/$96/
- x1/$42/$8b/$ae/srcupperleft/$8e/$db/$8b/$ca/$f3/$a5/$2b/
- $f2/$2b/$f2/$2b/$fa/$2b/$fa/$81/$ee/$a0/$00/$81/$ef/$a0/
- $00/$3b/$f5/$7d/$e8/$eb/$6e/$90/$8b/$86/y3/$3b/$86/y1/
- $7f/$33/$fd/$8b/$b6/srcupperright/$8b/$be/
- destupperright/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ae/
- srclowerright/$8e/$db/$8b/$ca/$f3/$a5/$03/$f2/$03/$f2/
- $03/$fa/$03/$fa/$81/$c6/$a0/$00/$81/$c7/$a0/$00/$3b/$f5/
- $7e/$e8/$eb/$31/$90/$fd/$8b/$b6/srclowerright/$8b/$be/
- destlowerright/$8b/$96/x2/$2b/$96/x1/$42/$8b/$ae/
- srcupperleft/$8e/$db/$8b/$ca/$f3/$a5/$03/$f2/$03/$f2/
- $03/$fa/$03/$fa/$81/$ee/$a0/$00/$81/$ef/$a0/$00/$3b/$f5/
- $7d/$e8/$1f/$5d);
- end;
-
- end.
-
-